@@ -73,29 +73,23 @@ module ApplicationHelper |
||
73 | 73 |
end |
74 | 74 |
|
75 | 75 |
def highlighted?(id) |
76 |
- (@hl ||= |
|
77 |
- case hl = params[:hl].presence |
|
78 |
- when nil |
|
79 |
- ->x { false } |
|
80 |
- when String |
|
81 |
- values = hl.split(/,/).flat_map { |i| |
|
82 |
- case i |
|
83 |
- when /\A(\d+)\z/ |
|
84 |
- i.to_i |
|
85 |
- when /\A(\d+)?-(\d+)?\z/ |
|
86 |
- ($1 ? $1.to_i : 1)..($2 ? $2.to_i : Float::INFINITY) |
|
87 |
- else |
|
88 |
- [] |
|
89 |
- end |
|
90 |
- } |
|
91 |
- ->x { |
|
92 |
- case x |
|
93 |
- when *values |
|
94 |
- true |
|
95 |
- else |
|
96 |
- false |
|
97 |
- end |
|
98 |
- } |
|
99 |
- end)[id] |
|
76 |
+ @highlighted_ranges ||= |
|
77 |
+ case value = params[:hl].presence |
|
78 |
+ when String |
|
79 |
+ value.split(/,/).flat_map { |part| |
|
80 |
+ case part |
|
81 |
+ when /\A(\d+)\z/ |
|
82 |
+ (part.to_i)..(part.to_i) |
|
83 |
+ when /\A(\d+)?-(\d+)?\z/ |
|
84 |
+ ($1 ? $1.to_i : 1)..($2 ? $2.to_i : Float::INFINITY) |
|
85 |
+ else |
|
86 |
+ [] |
|
87 |
+ end |
|
88 |
+ } |
|
89 |
+ else |
|
90 |
+ [] |
|
91 |
+ end |
|
92 |
+ |
|
93 |
+ @highlighted_ranges.any? { |range| range.cover?(id) } |
|
100 | 94 |
end |
101 | 95 |
end |